﻿using System.Collections.Generic;
using ku.silbentrenner.contract;
using ku.datamodel.contract;

namespace ku.silbentrenner
{
    public class Silbentrenner : ISilbentrenner
    {
        public IEnumerable<Token> Trenne(IEnumerable<Token> tokens)
        {
            foreach(Token token in tokens)
            {
                if (token.Typ == TokenType.Wort && token.Inhalt.Length > 0)
                    foreach(var silbe in SofttrennerHinzufuegen(token.Inhalt.Silben()))
                    {
                        yield return silbe;
                    }
                else
                    yield return token;
            }
        }


        internal static IEnumerable<Token>  SofttrennerHinzufuegen(IEnumerable<string> silben)
        {   
            Token trenner = new Token("-", TokenType.Softtrenner);
            bool atFirst = true;

            foreach(string silbe in silben)
            {
                if (!atFirst)
                    yield return trenner;
                yield return new Token(silbe,TokenType.Wort);
                atFirst = false;
            }
        }

    }
}
